// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;

// public class UpCardBagContent : MonoBehaviour
// {
//     public List<Card> cards = new List<Card>();
//     public List<CardView> cardViews = new List<CardView>();

//     [SerializeField] private Transform cardParent;
//     public int columns = 5;  // 每行显示的卡牌数量

//     [SerializeField] private float spacingX = 2f;  // X轴间距
//     [SerializeField] private float spacingY = 3f;  // Y轴间距（行高）
//     [SerializeField] private float moveDuration = 0.3f; // 移动动画时长

//     [Header("可视区域设置")]
//     [Tooltip("可视区域最多能显示的行数（建议根据UI实际大小设置）")]
//     [SerializeField] private int visibleRows ;  // 可视行数配置

//     private bool isMoving = false;
//     private float currentYOffset = 0f; // 当前Y轴总偏移量


//     public void Setup(List<Card> newCards)
//     {
//         cards = newCards;
//         CreateCardViews();
//     }




//     //传入CardView数据
//     public void RefreshCards()
//     {
//         for (int i = 0; i < cardViews.Count; i++)
//         {
//             cards[i] = cardViews[i].card;
//             if (cards[i].ProNumber == 1)
//             {
//                 Debug.Log($"升级后的卡牌{cards[i].Title} ProNumber={cards[i].ProNumber}");
//             }  
//         }
//     }
//     private void CreateCardViews()
//     {
//         ClearCardViews();
//         currentYOffset = 0f; // 重置偏移量

//         for (int i = 0; i < cards.Count; i++)
//         {
//             Card card = cards[i];
//             CardView cardView = CardViewCreator.Instance.CreateCardView(card, cardParent);
//             if (cardView != null)
//             {
//                 int row = i / columns;
//                 int col = i % columns;
//                 Vector3 pos = new Vector3(col * spacingX, -row * spacingY, 0);
//                 cardView.transform.localPosition = pos;

//                 cardViews.Add(cardView);
//             }
//         }
//     }

//     public void ClearCardViews()
//     {
//         foreach (var cv in cardViews)
//             if (cv != null) Destroy(cv.gameObject);
//         cardViews.Clear();
//     }

//     public void MoveCardsUp()
//     {
//         if (isMoving) return;

//         float newOffset = currentYOffset + spacingY;
//         if (IsWithinBounds(newOffset))
//         {
//             StartCoroutine(MoveCards(Vector3.up * spacingY));
//             currentYOffset = newOffset;
//         }
//     }

//     public void MoveCardsDown()
//     {
//         if (isMoving) return;

//         float newOffset = currentYOffset - spacingY;
//         if (IsWithinBounds(newOffset))
//         {
//             StartCoroutine(MoveCards(Vector3.down * spacingY));
//             currentYOffset = newOffset;
//         }
//     }

//     private bool IsWithinBounds(float newOffset)
//     {
//         int totalRows = Mathf.CeilToInt(cards.Count / (float)columns);

//         if (totalRows <= visibleRows)
//             return false;

//         //卡牌向上移动  最低位置卡牌最多向上移动到(第一排卡牌初始位置+2*spacingY)
//         // 最大偏移 = （总行数 - 可视行数） * spacingY + 额外的2个spacingY向上空间
//         float maxYOffset = (totalRows - visibleRows) * spacingY + 2 * spacingY;
//         //卡牌向下移动  第一个卡牌最多向下移动到(第一排卡牌初始位置-1*spacingY)
//         // 最小偏移 = 负的1个spacingY向下空间
//         float minYOffset = -1 * spacingY;

//         return newOffset >= minYOffset && newOffset <= maxYOffset;
//     }

//     private IEnumerator MoveCards(Vector3 offset)
//     {
//         isMoving = true;

//         float elapsed = 0f;
//         List<Vector3> startPositions = new List<Vector3>();
//         List<Vector3> endPositions = new List<Vector3>();

//         foreach (var cv in cardViews)
//         {
//             startPositions.Add(cv.transform.localPosition);
//             endPositions.Add(cv.transform.localPosition + offset);
//         }

//         while (elapsed < moveDuration)
//         {
//             elapsed += Time.deltaTime;
//             float t = Mathf.Clamp01(elapsed / moveDuration);

//             for (int i = 0; i < cardViews.Count; i++)
//             {
//                 cardViews[i].transform.localPosition = Vector3.Lerp(startPositions[i], endPositions[i], t);
//             }

//             yield return null;
//         }

//         for (int i = 0; i < cardViews.Count; i++)
//             cardViews[i].transform.localPosition = endPositions[i];

//         isMoving = false;
//     }
// }
